<?php 

/**
*Form Builder & Admin Generator

*@author marcio <opi14@op.pl>, <polishvodka7@gmail.com>
*@copyright Copyright (c) 2011, marcio
*@version 1.6.5
*/

require_once('libraries/Form.php');

abstract class Volta_Form_Element
{

	/**
	*Skladowa klasy ktora przechowywuje nazwe pola
	*@access protected
	*@var string $label
	*/
	protected $label;
	
	/**
	*Skladowa klasy ktora przechowywuje wartosc pola
	*@access protected
	*@var string $value
	*/
	protected $value;

	/**
	*Skladowa klasy ktora przechowywuje atrybuty
	*@access protected
	*@var array $attributes
	*/
	protected $attributes = array();
	
	
	/**
	*Metoda ustawia nam atrybuty
	*@access public 
	*@param array $attributes
	*/
	public function set_attributes($attributes)
	{
		if(is_array($attributes))
			$this -> attributes = $attributes;
		else
			throw new InvalidArgumentException("Podany argument nie jest tablica");
		
	}
	
	
	/**
	*Ustawiamy nazwe pola
	*@access public 
	*@param string $key
	*@return mixed 
	*/
	public function set_label($label)
	{
		if(is_array($label))
			$this -> label = $label['name'];
		else
			$this -> label = $label;
	}
	

	/**
	*Ustawiamy wartosc pola
	*@access public 
	*@param string $value
	*/
	public function set_value($value)
	{
		$this -> value = $value;
	}
	
	
	/**
	*Pobieramy nazwe pola
	*@access protected
	*@return string
	*/
	protected function get_label()
	{
		return $this -> label;
	}
	
	
	/**
	*Pobieramy wartosc pola
	*@access protected
	*@return string
	*/
	protected function get_value()
	{
		return $this -> value;
	}
	
	
	/**
	*Pobieramy atrybuty
	*@access protected
	*@return array 
	*/
	protected function get_attributes()
	{
		return $this -> attributes;
	}
	
	
	/**
	*Pobieramy atrybut
	*@access protected
	*@return string 
	*/
	protected function get_attribute($attr)
	{
		return $this -> attributes[$attr];
	}
	
	
	abstract public function render();
}
?>